// 调用 wapi 选择颜色
package main

import (
	"fmt"
	xc "gitee.com/go_888/xcgui/xcgui/xc"
	"unsafe"

	app "gitee.com/go_888/xcgui/xcgui/app"
	wapi "gitee.com/go_888/xcgui/xcgui/wapi"
	widget "gitee.com/go_888/xcgui/xcgui/widget"
	window "gitee.com/go_888/xcgui/xcgui/window"
	xcc "gitee.com/go_888/xcgui/xcgui/xcc"
)

var w *window.Window
var custColors [16]uint32 // 保存自定义颜色的数组

func main() {
	a := app.X创建(true)
	a.X启用DPI(true)
	a.X启用自动DPI(true)
	w = window.X创建窗口(0, 0, 430, 300, "选择颜色", 0, xcc.X窗口样式_默认样式)

	widget.X创建按钮(20, 40, 100, 30, "选择颜色", w.X句柄).X事件_被单击(onBnClick)

	a.X显示窗口并运行(w.X句柄)
	a.X退出()
}

func onBnClick(pbHandled *bool) int {
	// 可直接调用: wutil.ChooseColor(w.Handle)
	ExampleChooseColorW()
	return 0
}

func ExampleChooseColorW() {
	cc := wapi.X结构_颜色选择框{
		LStructSize:    36,
		HwndOwner:      w.X取HWND句柄(),
		HInstance:      0,
		RgbResult:      0,
		LpCustColors:   &custColors[0],
		Flags:          wapi.X常量_初始化颜色对话框_FULLOPEN, // 默认打开自定义颜色
		LCustData:      0,
		LpfnHook:       0,
		LpTemplateName: 0,
	}
	cc.LStructSize = uint32(unsafe.Sizeof(cc))
	ret := wapi.X创建颜色对话框(&cc)
	fmt.Println(ret)
	if !ret {
		return
	}

	rgb := cc.RgbResult
	rgba := xc.RGB转为RGBA(int(rgb), 255)
	fmt.Println("rgb颜色:", rgb)
	fmt.Println("炫彩使用的颜色:", rgba)
	fmt.Println(custColors) // 如果你添加了自定义颜色, 会保存在这个数组里面, 然后只要这个数组还在, 再次打开选择颜色界面时, 之前添加的自定义颜色还会存在

	// 设置窗口背景颜色
	w.X添加背景填充(xcc.X窗口状态_整个窗口, rgba)
	w.X重绘(true)
}
